package com.hzhc.service;

import com.alibaba.fastjson2.JSONArray;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzhc.dto.UserDto;
import com.hzhc.entity.VehicleReservation;
import com.hzhc.utils.ResultUtil;
import com.hzhc.vo.UserMemberVo;
import com.hzhc.vo.VehicleReservationVo;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 车辆预约 服务类
 * </p>
 *
 * @author 功不唐捐
 * @since 2024-05-27
 */
public interface VehicleReservationService extends IService<VehicleReservation> {

    List<VehicleReservationVo> getWxList(Page<VehicleReservationVo> page, VehicleReservationVo vo);

    ResultUtil<T> addVehicleReservation(VehicleReservationVo vo, JSONArray cntrPhoto,JSONArray cntrPhotoB, String upfolder, String accessPath);

    ResultUtil<T> addVehicleReservation(VehicleReservationVo vo, JSONArray cntrPhoto,JSONArray cntrPhotoB);

    ResultUtil<T> updateVehicleReservation(VehicleReservationVo vo, JSONArray cntrPhoto, JSONArray cntrPhotoB, String upfolder, String accessPath);

    ResultUtil<T> updateVehicleReservation(VehicleReservationVo vo, JSONArray cntrPhoto, JSONArray cntrPhotoB);

    ResultUtil<T> delVehicleReservation(VehicleReservation vo);

    List<VehicleReservationVo> getVehicleReservationList(Page<VehicleReservationVo> page, VehicleReservationVo vo);

    ResultUtil<T> addTkzhVehicleReservation(VehicleReservationVo vo);

    ResultUtil<T> updateTkzhVehicleReservation(VehicleReservationVo vo);

    ResultUtil<T> delTkzhVehicleReservation(VehicleReservation vo);

    Map<String, Object> getChooseData(VehicleReservationVo vo);

    List<VehicleReservationVo> getYzsVehicleReservationList(Page<VehicleReservationVo> page, VehicleReservationVo vo);

    ResultUtil<T> updateSubmitType(UserDto user, Long id);

    List<VehicleReservationVo> getDriverList(Page<VehicleReservationVo> page, VehicleReservationVo vo);

    Map<String, Object> getChooseDataByCarNo(VehicleReservationVo vo);

    List<VehicleReservationVo> getVehicleList(Page<VehicleReservationVo> page, VehicleReservationVo vo);

    VehicleReservationVo getXcZtMsg(VehicleReservationVo vo);

    ResultUtil<T> updateCarNo(VehicleReservationVo vo);

    ResultUtil<T> importYuyueList(HttpServletRequest request, VehicleReservationVo  vo);

    void exportYuyueFile(HttpServletRequest request, HttpServletResponse response, String exportExcelPathCms);

    ResultUtil<List<VehicleReservationVo>> YuyueUpload(UserDto user, MultipartFile file,String orderNo,String companyId);

    ResultUtil<T> importYZSYuyueList(HttpServletRequest request, VehicleReservationVo vo);

    void exportYZSYuyueFile(HttpServletRequest request, HttpServletResponse response, String exportExcelPathYZS);

    ResultUtil<List<VehicleReservationVo>> YuyueYZSUpload(UserDto user, MultipartFile file,String orderNo,String companyId);

    ResultUtil<T> backSubmitType(UserDto user, Long id);
}
